﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using System.Diagnostics.Contracts;
using System.Globalization;

namespace ShredTheLog.Api
{
    public interface IUserInfo
    {
        int Uid { get; }
    }

    public interface IBasicUserInfo : IUserInfo
    {
        string FirstName { get; }
        string LastName { get; }
        Country Country { get; }
        int Age { get; }
        Gender Gender { get; }
        string Name { get; }
    }

    public interface IShortUserInfo : IBasicUserInfo
    {
        IEnumerable<Language> KnownLanguages { get; }
        IEnumerable<Language> PracticingLanguages { get; }
    }

    public interface ILast15UserInfo : IShortUserInfo
    {
        DateTime BirthDate { get; }
    }

    public interface IContact : IShortUserInfo
    {
        int RID { get; }

        /// <summary>
        /// Дата и время добавления контакта в UTC
        /// </summary>
        DateTime CreationDate { get; }

        /// <summary>
        /// ???
        /// </summary>
        /// <remarks>
        /// Всегда 1
        /// </remarks>
        int S { get; }

        /// <summary>
        /// Статус пользователя
        /// </summary>
        /// <remarks>
        /// Возможные значения: Accepted, Deleted
        /// </remarks>
        string US { get; }
    }

    public interface IFullUserInfo : IShortUserInfo
    {
        string US { get; }
        string Location { get; }
        string Description { get; }
        bool ExchangesEmails { get; }
        bool ChatsOnline { get; }
        DateTime RegistrationDate { get; }
    }

    public interface ISessionCredentials : IFullUserInfo
    {
        string Ssid { get; }
        string IS { get; }
        string UserName { get; }
        string Password { get; }
        string Email { get; }
        int NM { get; }
        bool RWorldIsOn { get; }
        DateTime BirthDate { get; }
    }
}
